////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2011-2012 www.iflytek.com. All Rights Reserved.
//  This software for customer relationship management system, developed by Noo team.
//  Software code and design for the team, copy rights reserved.
////////////////////////////////////////////////////////////////////////////////

package com.iflytek.ci.common.service;

import com.iflytek.ci.main.domain.Attachment;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.OutputStream;
import java.util.List;


/**
 * <p>
 * 附件服务，同时操作MongoDB数据库和Mysql数据库.
 * </p>
 *
 * @author poplar.yfyang
 * @version 1.0 2012-10-31 12:13 AM
 * @since JDK 1.5
 */
public interface AttachmentService {

	/**
	 * 新增一个附件
	 *
	 * @param attachment 附件信息
	 * @param file       文件信息
	 */
	void add_attachment(Attachment attachment, File file);

    /**
     * 新增多个附件
     *
     * @param attachments 附件信息
     * @param file       文件信息
     */
    void add_attachments(List<Attachment> attachments, File file);

	/**
	 * 删除附件信息
	 *
	 * @param file_name     文件名称
	 */
	void remove_attachment(String file_name);

	/**
	 * 根据文件名获取文件内容，并将文件内容信息写入到输出流中
     *
	 * @param out 输出流
	 * @param file_name  文件名称
	 */
	void attachment_write_to_output(OutputStream out, String file_name);

	/**
	 * 保存上传的文件
	 *
	 * @param upload_file 文件，上传文件
	 * @return 上传的文件名称
	 */
	String file_attachment_upload(MultipartFile upload_file);

	/**
	 * 通过文件流保存附件信息，不通过本地缓存
	 *
	 * @param name        文件名称
	 * @param fileContext 文件内容
	 */
	void add_attachment(String name, byte[] fileContext);
}
